package com.easyCode.dataMock.anno;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * 标注在字段上,指明模拟数据生成的规则:
 * 1.固定
 * 2.随机
 * 3.递增
 * 4.规则
 * 5.词库
 * @author 大忽悠
 * @create 2023/1/18 10:59
 */
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldMock {
    /**
     * @return 列名,默认为字段名小写并且进行驼峰到下划线的转换
     */
    String fieldName() default "";
    /**
     * @return 模拟数据生成的规则
     */
    int rule();
    /**
     * 指定额外信息: <br>
     * 1. 固定值,指明固定值的大小<br>
     * 2. 随机值,指明随机类型,数组长度为2,那么第二个元素指明数组随机取值的最大范围,最小起始值为0,数组长度为3,那么第二个元素指明随机取值最小范围,第三个元素指明随机范围最大范围<br>
     * tips: 随机值还可以针对日期设置范围 <br>
     * 3. 递增值,指明递增初值,数组第二个元素如果不为空,则指明每次增加值<br>
     * 4. 规则值,指明正则表达式<br>
     * 5. 词库值,指明来源于哪个词库,除非使用默认词库,否则需要指明词库文件的全路径,数组第二个元素不为空,则指明词库中单词的分隔符号<br>
     */
    String[] extra();
}
